LGF_ShiftRegister (FB / 4.0.0)

Übersicht

Autor: Siemens Digital Industry Support

Kurzbeschreibung

Die Funktion repräsentiert ein Schieberegister für alle möglichen Datentypen (durch Nutzung von Variant).
Es ist möglich die Elemente im Array bufferRegister nach Links (Index array[n]:=array[n+1]) oder Rechts (Index array[n]:=array[n-1]) zu schieben.
Sie kann zum Beispiel zur Materialverfolgung durch eine Maschine und den Prozess genutzt werden, zum Beispiel für Rundschalttische.


Hinweis
Da diese Funktion die Array Elemente verschiebt, kann es zu Auswirkungen auf die Zykluszeit kommen, abhängig von der Größe des verschaltenden Arrays am Eingang bufferRegister.
Bitte beachten Sie, dass ein FIFO- oder LIFO-Speicher, basierend auf Indizierung, für viele Applikation genauso ausreichend ist.

Baustein Schnittstelle

LGF_ShiftRegister (FB)
Bool  enable valid  Bool
    
Bool  shiftLeft busy  Bool
    
Bool  shiftRight error  Bool
    
UInt  shiftRange status  Word
    
Bool  reset leftShiftCount  DInt
    
Bool  clear rightShiftCount  DInt
    
Bool  fill shiftOffsetCounter  DInt
    
Variant  initialItem diagnostics  LGF_typeDiagnostics
    
Variant  bufferRegister  Variant
       
   

Input Parameter

BezeichnerDatentyp Default Wert Beschreibung
enableBool FALSE TRUE: Aktiviert die Funktionalität des FB
shiftLeftBool FALSE Positive Flanke: Elemente in `bufferRegister` werden nach links geschoben, von Index `N` nach `N - 1`.
Das Element im Index `N = 0` wird überschrieben.
shiftRightBool FALSE Positive Flanke: Elemente in `bufferRegister` werden nach rechts geschoben, von Index `N` nach `N + 1`.
Das Element im Index `N = letzter Index` wird überschrieben.
shiftRangeUInt 1 Anzahl der Plätze, um die die Elemente im Eingangs Array an `bufferRegister` verschoben werden.
resetBool FALSE Puffer initialisieren (Index und Zähler zurücksetzen)
clearBool FALSE Clear / Ablöschen der Elemente in Eingangsarray `bufferRegister` mit `initialItem`
fillBool FALSE Überschreiben der Pufferelemente nach der Schiebeoperation.
* `shiftLeft` - die links gelegenen Elemente
* `shiftRight` - die rechts gelegenen Elemente
werden mit `initalItem` überschrieben.
initialItemVariant --- Wert mit dem das Array des Puffers initialisiert wird
(meistens: `0` / default wert)

Output Parameter

BezeichnerDatentyp Beschreibung
validBool TRUE: Ausgabewerte am FB gültig
busyBool TRUE: FB ist aktive und neue Ausgabewerte können erwartet werden.
errorBool FALSE: Kein Fehler
TRUE: Während der Ausführung des FB ist ein Fehler aufgetreten
statusWord 16#0000-16#7FFF: Status des FB
16#8000-16#FFFF: Fehleridentifikation (siehe folgende Tabelle)
leftShiftCountDInt Anzahl der Elemente im Puffer
rightShiftCountDInt Anzahl der Elemente im Puffer
shiftOffsetCounterDInt Offset der Schiebeoperationen.
`rightShift` - `leftShift`
diagnosticsLGF_typeDiagnostics Diagnosestruktur zur Speicherung und Übertragung von Diagnoseinformationen von Blöcken über die Schnittstelle.

In/Out Parameter

BezeichnerDatentyp Beschreibung
bufferRegisterVariant Puffer / Register Speicher als Array in welchem die Daten gespeichert sind. Die Daten im Register werden nach Links oder Rechts verschoben, abhängig vom Kommando.

Status & Error Meldungen

Code / WertBezeichner / Beschreibung
16#0000STATUS_NO_ERROR
Status: Abarbeitung ohne Fehler beendet
16#7000STATUS_NO_CURRENT_JOBS
Status: Keine aktuelle Bearbeitung, initial State
16#7001STATUS_FIRST_CALL
Erstaufruf nach steigender Flanke
16#7002STATUS_SUBSEQUENT_CALL
Status: Unteraufruf ohne weitere Detail Information
16#8001ERR_BUFFER_EMPTY
Fehler: Der Puffer ist leer
16#8002ERR_BUFFER_FULL
Fehler: Der Puffer ist voll
16#8200ERR_NO_ARRAY
Fehler: Am Eingang `bufferRegister` liegt kein Array an.
16#8201ERR_CLEARING_WITHOUT_INITIAL_ITEM
Fehler: Ein Ablöschen des Arrays an `bufferRegister` ohne einen Datenpunkt an `initialItem` ist nicht möglich.
16#8202ERR_FILL_WITHOUT_INITIAL_ITEM
Fehler: Ein Überschreiben der Arrayelemente an `bufferRegister` mit der Option `fill` ohne einen Datenpunkt an `initialItem` ist nicht möglich.
16#8203ERR_WRONG_TYPE_INITIAL_ITEM
Fehler: Der Datentyp des Eingangs `initialItem` entspricht nicht dem Datentyp des Arrays am InOut-Parameter `bufferRegister`.
16#8204ERR_BOOL_NOT_SUPPORTED
Fehler: Boolesche Variablen und Arrays werden von `MOVE_BLOCK_VARIANT` nicht unterstützt. (Verwenden Sie stattdessen einen PLC-Datentyp)
16#8401ERR_MULTIPLE_COMMANDS_DEDECTED
Fehler: Mehr als ein Kommando an den Eingängen präsent. Nur ein Kommando an den Eingängen `shiftLeft`, `shiftRight` oder `clear` ist zulässig.
16#8402ERR_IN_SHIFT_RANGE
Fehler: Der Wert an `shiftRange` darf nicht die maximale Größe des Arrays an `bufferRegister` annehmen oder übersteigen.
16#8600ERR_UNDEFINED_STATE
Fehler: Unbekannter Zustand in der Statemaschine
16#8610ERR_CLEAR_BUFFER
Fehler: Während des Ablöschens des Puffers in Funktion `MOVE_BLK_VARIANT` - weitere Infos in `subFunctionStatus`
16#8611ERR_SHIFT_BUFFER_LEFT
Fehler: Schieben der Elemente nach links fehlgeschlagen, Fehler in Funktion `MOVE_BLK_VARIANT` - weitere Infos in `subFunctionStatus
16#8612ERR_SHIFT_BUFFER_LEFT_FILL
Fehler: Überschreiben der Elemente nach Schieben / Links mit dem Initialwort in Funktion `MOVE_BLK_VARIANT` fehlerhaft - weitere Infos in `subFunctionStatus
16#8621ERR_SHIFT_BUFFER_RIGHT
Fehler: Schieben der Elemente nach rechts fehlgeschlagen, Fehler in Funktion `MOVE_BLK_VARIANT` - weitere Infos in `subFunctionStatus
16#8622ERR_SHIFT_BUFFER_RIGHT_FILL
Fehler: Überschreiben der Elemente nach Schieben / Rechts mit dem Initialwort in Funktion `MOVE_BLK_VARIANT` fehlerhaft - weitere Infos in `subFunctionStatus

Benutzer definierte Datentypen

LGF_typeDiagnostics (UDT / V1.0.1)

Diagnosestruktur zur Speicherung und Übertragung von Diagnoseinformationen von Blöcken über die Schnittstelle.

Bezeichner Datentyp Default Wert Beschreibung
status Word 16#0000 Status des Bausteins oder Fehleridentifikation beim Auftreten des Fehlers
subfunctionStatus Word 16#0000 Status oder Rückgabewert von aufgerufenen FB's, FC's und Systembausteinen
stateNumber DInt 0 Zustand in der Zustandsmaschine des Blocks, in dem der Fehler aufgetreten ist

Änderungshistorie

Version & DatumÄnderungsbeschreibung
1.0.0Siemens Industry Online Support
03.07.2018First released version
3.0.0Simatic Systems Support
09.04.2021Refactoring and alignment to Datatype Variant
Insert documentation
4.0.0Simatic Systems Support
04.09.2024Rework to PLC Open `Enable` behavior
Add `reset` input / counter outputs
Fix Bug while filling after left shift operation
Rework to diagnostic output datatype